home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / DataPh~1.cab / _569EF80F449A41F0B0C053EB85CCEB15 < prev    next >
Encoding:
Text File  |  2004-05-19  |  10.3 KB  |  250 lines

  1. ///////////////////////////////////////////////////////////////////////////////////////////////////
  2. // Reprezentacja dwunoznego pawna przy pomocy fizyki ODE
  3. // Ze skryptu korzysta ODEPhysicsRagdoll.cpp
  4. ///////////////////////////////////////////////////////////////////////////////////////////////////
  5.  
  6. !include("ODEPhysics.def")
  7.  
  8. !RagdollParams()
  9. !Mass(f)                // masa ciala [kg]
  10.  
  11. !BonesWeightDistribution()              // pozwala na ustalenie rozkladu masy
  12. !SetBoneWeight(s,f)                     // ustawia mase danej kosci
  13.  
  14. //TODO !ContactParamsTorso()                   // ustawienia kolizji dla tulowia
  15. //TODO
  16.  
  17. //TODO !ContactParamsLimbs()                   // ustawienia kolizji dla konczyn
  18.  
  19. //TODO !ContactParamsOff()                     // wylaczenie kolizji
  20.  
  21. !Joints()
  22. !Set3DOFStops(s,f,f,f,f,f,f)            // ustawienie parametrow stopu w joincie z 3 stopniami swobody
  23. !Set2DOFStops(s,f,f,f,f)                // ustawienie parametrow stopu w joincie z 2 stopniami swobody
  24. !Set1DOFStops(s,f,f)                    // ustawienie parametrow stopu w joincie z 1 stopniem swobody
  25. !SetFrictionForce(s,f)                  // sila tarcia jointa - sila probujaca zatrzymac np. zgiecie reki
  26. !SetStopCFM(s,f)                        // parametr CFM w reakcji na osiagniecie stopu
  27. !SetStopERP(s,f)                        // parametr ERP w reakcji na osiagniecie stopu
  28. !SetCFM(s,f)                            // parametr CFM jointa
  29. !SetFudgeFactor(s,f)                    // parametr FudgeFactor - okreslajacy wspolczynnik zawrocenia jointa ze stopu
  30. !SetAnchorPosition(s,f,f,f,f,f,f)       // ustawia pozycje stawu (anchora jointa) na podstawie 2 wektorow odleglosci wzglednych od srodkow kosci
  31.  
  32. //-------------------------------------------------------------------------------
  33.  
  34. RagdollParams()
  35. {
  36.     Mass(100)
  37. }
  38.  
  39. //-------------------------------------------------------------------------------
  40.  
  41. PhysicsParams()
  42. {
  43.     SetPhysicsSurfaceID(SRF_FLESH)
  44.  
  45.     SetMaxVels(4000, 50)
  46.  
  47.     SetCollisionDepthCompressor(0.9, 2)
  48.     
  49.     SetAutoDisableVels(10, 10, 1)
  50.  
  51.     SetAbsorbers(0, 0) 
  52.  
  53.     SetWaterFloat(0.08)
  54. }
  55.  
  56. //-------------------------------------------------------------------------------
  57. //TODO
  58. /*
  59. CollisionResponseTorso()
  60. {
  61.     SetResponse("Terrain", "Slip")
  62.     SetResponseParam("Terrain", 0.0002)
  63.  
  64.     SetResponse("NonODEObjects", "Slip")
  65.     SetResponseParam("NonODEObjects", 0.0002)
  66.  
  67.     SetResponse("ODEObjects", "Slip")
  68.     SetResponseParam("ODEObjects", 0.0002)
  69.  
  70.     SetResponse("ODEObjectsSamePhysics", "Ignore")
  71.  
  72.     SetResponse("Trees", "Slip")
  73.     SetResponseParam("Trees", 0.0002)
  74. }
  75.  
  76. //-------------------------------------------------------------------------------
  77.  
  78. CollisionResponseLimbs()
  79. {
  80.     SetResponse("Terrain", "Slip")
  81.     SetResponseParam("Terrain", 0.001)
  82.  
  83.     SetResponse("NonODEObjects", "Slip")
  84.     SetResponseParam("NonODEObjects", 0.001)
  85.  
  86.     SetResponse("ODEObjects", "Slip")
  87.     SetResponseParam("ODEObjects", 0.001)
  88.  
  89.     SetResponse("ODEObjectsSamePhysics", "Slip")
  90.     SetResponseParam("ODEObjectsSamePhysics", 0.1)
  91.     
  92.     SetResponse("Trees", "Slip")
  93.     SetResponseParam("Trees", 0.001)
  94. }
  95.  
  96. //-------------------------------------------------------------------------------
  97.  
  98. CollisionResponseOff()
  99. {
  100.     SetResponse("Terrain", "Ignore")
  101.     SetResponse("NonODEObjects", "Ignore")
  102.     SetResponse("ODEObjects", "Ignore")
  103.     SetResponse("ODEObjectsSamePhysics", "Ignore")
  104.     SetResponse("Trees", "Ignore")
  105. }
  106. */
  107. //-------------------------------------------------------------------------------
  108.  
  109. Joints()
  110. {
  111.     // parametry stopu
  112.     Set3DOFStops("PELVIS L_THIGH",       -0.15, 0.60,   -0.09, 0.30,   -0.40, 0.12) 
  113.     Set3DOFStops("PELVIS R_THIGH",       -0.15, 0.60,   -0.30, 0.09,   -0.12, 0.40) 
  114.     Set1DOFStops("L_THIGH L_CALF",       -0.02, 0.89) //0.49
  115.     Set1DOFStops("R_THIGH R_CALF",       -0.02, 0.89) //0.49
  116.     Set3DOFStops("PELVIS SPINE1",        -0.10, 0.10,   -0.05, 0.05,   -0.15, 0.15) 
  117.     Set3DOFStops("SPINE1 HEAD",          -0.40, 0.20,   -0.20, 0.20,   -0.30, 0.30) 
  118.     Set3DOFStops("SPINE1 L_UPPERARM",    -0.45, 0.45,   -0.30, 0.70,   -0.25, 0.25) 
  119.     Set3DOFStops("SPINE1 R_UPPERARM",    -0.45, 0.45,   -0.70, 0.30,   -0.25, 0.25) 
  120.     Set1DOFStops("L_UPPERARM L_FOREARM", -0.02, 0.79) 
  121.     Set1DOFStops("R_UPPERARM R_FOREARM", -0.79, 0.02) 
  122.  
  123.     // polozenie stawow
  124.     SetAnchorPosition("PELVIS L_THIGH",         0.00,  0.50,  0.00,    -0.50,  0.00,  0.00)
  125.     SetAnchorPosition("PELVIS R_THIGH",         0.00, -0.50,  0.00,    -0.50,  0.00,  0.00) 
  126.     SetAnchorPosition("PELVIS SPINE1",          1.10,  0.00,  0.00,    -1.10,  0.00,  0.00)
  127.     SetAnchorPosition("L_THIGH L_CALF",         0.50,  0.00,  0.00,    -0.50,  0.00,  0.00)
  128.     SetAnchorPosition("R_THIGH R_CALF",         0.50,  0.00,  0.00,    -0.50,  0.00,  0.00)
  129.     SetAnchorPosition("SPINE1 HEAD",            0.50,  0.00,  0.00,    -0.50,  0.00,  0.00)
  130.     SetAnchorPosition("SPINE1 L_UPPERARM",      0.30,  0.45,  0.00,    -0.49,  0.00,  0.00) 
  131.     SetAnchorPosition("SPINE1 R_UPPERARM",      0.30, -0.45,  0.00,    -0.49,  0.00,  0.00) 
  132.     SetAnchorPosition("L_UPPERARM L_FOREARM",   0.50,  0.00,  0.00,    -0.50,  0.00,  0.00)
  133.     SetAnchorPosition("R_UPPERARM R_FOREARM",   0.50,  0.00,  0.00,    -0.50,  0.00,  0.00)
  134.  
  135.     // sily tarcia stawow
  136.     SetFrictionForce("PELVIS L_THIGH",        6)
  137.     SetFrictionForce("PELVIS R_THIGH",        6)
  138.     SetFrictionForce("L_THIGH L_CALF",        2)
  139.     SetFrictionForce("R_THIGH R_CALF",        2)
  140.     SetFrictionForce("PELVIS SPINE1",         10)
  141.     SetFrictionForce("SPINE1 HEAD",           4)
  142.     SetFrictionForce("SPINE1 L_UPPERARM",     6)
  143.     SetFrictionForce("SPINE1 R_UPPERARM",     6)
  144.     SetFrictionForce("L_UPPERARM L_FOREARM",  2)
  145.     SetFrictionForce("R_UPPERARM R_FOREARM",  2)
  146.  
  147.     // wspolczynniki dopuszczalnych bledow stopow
  148.     SetStopERP("PELVIS L_THIGH",        0.1)
  149.     SetStopERP("PELVIS R_THIGH",        0.1)
  150.     SetStopERP("L_THIGH L_CALF",        0.1)
  151.     SetStopERP("R_THIGH R_CALF",        0.1)
  152.     SetStopERP("PELVIS SPINE1",         0.1)
  153.     SetStopERP("SPINE1 HEAD",           0.1)
  154.     SetStopERP("SPINE1 L_UPPERARM",     0.1)
  155.     SetStopERP("SPINE1 R_UPPERARM",     0.1)
  156.     SetStopERP("L_UPPERARM L_FOREARM",  0.1)
  157.     SetStopERP("R_UPPERARM R_FOREARM",  0.1)
  158.  
  159.     // wspolczynniki sprezystosci jointow po osiagnieciu stopow
  160.     SetStopCFM("PELVIS L_THIGH",        0.001)
  161.     SetStopCFM("PELVIS R_THIGH",        0.001)
  162.     SetStopCFM("L_THIGH L_CALF",        0.001)
  163.     SetStopCFM("R_THIGH R_CALF",        0.001)
  164.     SetStopCFM("PELVIS SPINE1",         0.001)
  165.     SetStopCFM("SPINE1 HEAD",           0.001)
  166.     SetStopCFM("SPINE1 L_UPPERARM",     0.001)
  167.     SetStopCFM("SPINE1 R_UPPERARM",     0.001)
  168.     SetStopCFM("L_UPPERARM L_FOREARM",  0.001)
  169.     SetStopCFM("R_UPPERARM R_FOREARM",  0.001)
  170.  
  171.     // wspolczynniki sprezystosci jointow
  172.     SetCFM("PELVIS L_THIGH",        0.0001)
  173.     SetCFM("PELVIS R_THIGH",        0.0001)
  174.     SetCFM("L_THIGH L_CALF",        0.0001)
  175.     SetCFM("R_THIGH R_CALF",        0.0001)
  176.     SetCFM("PELVIS SPINE1",         0.0001)
  177.     SetCFM("SPINE1 HEAD",           0.0001)
  178.     SetCFM("SPINE1 L_UPPERARM",     0.0001)
  179.     SetCFM("SPINE1 R_UPPERARM",     0.0001)
  180.     SetCFM("L_UPPERARM L_FOREARM",  0.0001)
  181.     SetCFM("R_UPPERARM R_FOREARM",  0.0001)
  182.  
  183.     // wspolczynniki tlumienia sily oddalajacej od stopu (1 - brak tlumienia, 0.5 - sila zmniejszona dwukrotnie)
  184.     SetFudgeFactor("PELVIS L_THIGH",        0.9)
  185.     SetFudgeFactor("PELVIS R_THIGH",        0.9)
  186.     SetFudgeFactor("L_THIGH L_CALF",        0.9)
  187.     SetFudgeFactor("R_THIGH R_CALF",        0.9)
  188.     SetFudgeFactor("PELVIS SPINE1",         0.9)
  189.     SetFudgeFactor("SPINE1 HEAD",           0.9)
  190.     SetFudgeFactor("SPINE1 L_UPPERARM",     0.9)
  191.     SetFudgeFactor("SPINE1 R_UPPERARM",     0.9)
  192.     SetFudgeFactor("L_UPPERARM L_FOREARM",  0.9)
  193.     SetFudgeFactor("R_UPPERARM R_FOREARM",  0.9)
  194. }
  195.  
  196. //-------------------------------------------------------------------------------
  197.  
  198. BonesWeightDistribution()
  199. {
  200.     // ustawiamy ratio masy uzywanych kosci
  201.     SetBoneWeight("Pelvis",     30)             // miednica
  202.     SetBoneWeight("Spine1",     45)             // klatka piersiowa
  203.     SetBoneWeight("Head",       10)             // glowa
  204.     SetBoneWeight("L Upperarm", 15)             // lewe ramie
  205.     SetBoneWeight("L Forearm",  10)             // lewe przedramie
  206.     SetBoneWeight("R Upperarm", 15)             // prawe ramie
  207.     SetBoneWeight("R Forearm",  10)             // prawe przedramie
  208.     SetBoneWeight("L Thigh",    25)             // lewe udo
  209.     SetBoneWeight("R Thigh",    25)             // prawe udo
  210.     SetBoneWeight("L Calf",     15)             // lewa lydka
  211.     SetBoneWeight("R Calf",     15)             // prawa lydka
  212. }
  213.  
  214. //-------------------------------------------------------------------------------
  215.  
  216. CollisionSoundsParams()
  217. {
  218.     SetFreqMinMax(0.6, 1.5)
  219.     SetInterval(0.1)
  220.  
  221.     SetHitMinVolumeLinVel(30)
  222.     SetHitMaxVolumeLinVel(800)
  223.  
  224.     SetFrictionMinVolumeLinVel(2000)
  225.     SetFrictionMaxVolumeLinVel(5000)
  226.     SetFrictionDotThreshold(0.04)
  227.     
  228.     SetHitSound(SRF_UNKNOWN, "Data/Sounds/collision/common/hit_default_XX.wav")
  229. //    SetFrictionSound(SRF_UNKNOWN, "Data/Sounds/collision/common/friction_default_XX.wav")
  230.  
  231.     SetHitSound(SRF_WOOD,       "Data/Sounds/collision/common/hit_wood_XX.wav")
  232.     SetHitSound(SRF_STONE,      "Data/Sounds/collision/common/hit_stone_XX.wav")
  233.     SetHitSound(SRF_SNOW,       "Data/Sounds/collision/common/hit_snow_XX.wav")
  234.     SetHitSound(SRF_MUD,        "Data/Sounds/collision/common/hit_mud_XX.wav")
  235.     SetHitSound(SRF_FLESH,      "Data/Sounds/collision/common/hit_flesh_XX.wav")
  236.     SetHitSound(SRF_GLASS,      "Data/Sounds/collision/common/hit_glass_XX.wav")
  237.     SetHitSound(SRF_METAL,      "Data/Sounds/collision/common/hit_metal_XX.wav")
  238.     SetHitSound(SRF_PLEXIGLASS, "Data/Sounds/collision/common/hit_plastic_XX.wav")
  239.     SetHitSound(SRF_PLASTIC,    "Data/Sounds/collision/common/hit_plastic_XX.wav")
  240.     SetHitSound(SRF_GROUND,     "Data/Sounds/collision/common/hit_ground_XX.wav")
  241.     SetHitSound(SRF_GRASS,      "Data/Sounds/collision/common/hit_grass_XX.wav")
  242.     SetHitSound(SRF_WATER,      "Data/Sounds/collision/common/hit_water_XX.wav")
  243. }
  244.  
  245. //-------------------------------------------------------------------------------
  246.  
  247.  
  248.  
  249.  
  250.